// @ts-ignore
/* eslint-disable */
import { request } from '@umijs/max';

/**
 * 获取指定用户的详细信息（管理员）
 * 
 * @param params 用户ID参数
 * @param options 请求选项
 * @returns 用户信息
 */
export async function getUserById(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.getUserByIdParams,
  options?: { [key: string]: any },
) {
  const { id: param0, ...queryParams } = params;
  return request<API.BaseResponseUserVO>(`/api/user/admin/get/${param0}`, {
    method: 'GET',
    params: { ...queryParams },
    ...(options || {}),
  });
}

/**
 * 更新用户角色权限（管理员）
 *
 * @param body 用户角色更新参数
 * @param options 请求选项
 * @returns 操作结果
 */
export async function updateUserRole(
  body: API.UserUpdateRoleDTO,
  options?: { [key: string]: any },
) {
  return request<API.BaseResponseBoolean>('/api/user/admin/update/role', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}

/**
 * 更新用户状态（启用/禁用）（管理员）
 *
 * @param body 用户状态更新参数
 * @param options 请求选项
 * @returns 操作结果
 */
export async function updateUserStatus(
  body: API.UserUpdateStatusDTO,
  options?: { [key: string]: any },
) {
  return request<API.BaseResponseBoolean>('/api/user/admin/update/status', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}

/**
 * 用户注销账号
 *
 * @param options 请求选项
 * @returns 操作结果
 */
export async function deactivateAccount(options?: { [key: string]: any }) {
  return request<API.BaseResponseBoolean>('/api/user/deactivate', {
    method: 'POST',
    ...(options || {}),
  });
}

/**
 * 获取当前登录用户信息
 *
 * @param options 请求选项
 * @returns 用户信息
 */
export async function getUserInfo(options?: { [key: string]: any }) {
  return request<API.BaseResponseUserVO>('/api/user/get/info', {
    method: 'GET',
    ...(options || {}),
  });
}

/**
 * 分页查询用户列表（管理员）
 *
 * @param body 分页查询参数
 * @param options 请求选项
 * @returns 用户分页列表
 */
export async function listUserByPage(body: API.UserPageQueryDTO, options?: { [key: string]: any }) {
  return request<API.BaseResponseUserPageVO>('/api/user/list/page', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}

/**
 * 用户登录
 *
 * @param body 登录参数
 * @param options 请求选项
 * @returns 登录用户信息
 */
export async function login(body: API.UserLoginDTO, options?: { [key: string]: any }) {
  return request<API.BaseResponseUserVO>('/api/user/login', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}

/**
 * 用户登出
 *
 * @param options 请求选项
 * @returns 操作结果
 */
export async function logout(options?: { [key: string]: any }) {
  return request<API.BaseResponseBoolean>('/api/user/logout', {
    method: 'POST',
    ...(options || {}),
  });
}

/**
 * 用户注册
 *
 * @param body 注册参数
 * @param options 请求选项
 * @returns 用户ID
 */
export async function register(body: API.UserRegisterDTO, options?: { [key: string]: any }) {
  return request<API.BaseResponseLong>('/api/user/register', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}

/**
 * 修改用户密码
 *
 * @param body 密码修改参数
 * @param options 请求选项
 * @returns 操作结果
 */
export async function updatePassword(
  body: API.UserUpdatePasswordDTO,
  options?: { [key: string]: any },
) {
  return request<API.BaseResponseBoolean>('/api/user/update/password', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}

/**
 * 更新用户个人资料
 *
 * @param body 个人资料更新参数
 * @param options 请求选项
 * @returns 更新后的用户信息
 */
export async function updateProfile(
  body: API.UserUpdateProfileDTO,
  options?: { [key: string]: any },
) {
  return request<API.BaseResponseUserVO>('/api/user/update/profile', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
